home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Graphics / Multimedia / Movie3.0 / Source / MovieView.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-04  |  3.7 KB  |  171 lines

  1. #include <stdio.h>
  2. #include <libc.h>
  3. #include <math.h>
  4. #include <sys/file.h> /* access() */
  5. #include <string.h> /* strfoo() */
  6. #include <sys/dir.h> /* getdirentries */
  7. #include <sys/stat.h>
  8. #include <sys/file.h>
  9.  
  10. #import <objc/List.h>
  11. #import <appkit/Application.h>   /* NX_BASETHRESHOLD */
  12. #import <appkit/View.h>
  13. #import <appkit/Pasteboard.h>
  14. #import <appkit/NXBitmapImageRep.h>
  15. #import <appkit/NXImage.h>
  16. #import <appkit/nextstd.h>
  17. #import <dpsclient/wraps.h>
  18. #import <appkit/Slider.h>
  19. #import <appkit/Button.h>
  20. #import <appkit/Matrix.h>
  21. #import <appkit/Text.h>
  22. #import <appkit/Panel.h>
  23. #import <appkit/OpenPanel.h>
  24. #import <appkit/SavePanel.h>
  25. #import <defaults/defaults.h>
  26. #import <streams/streams.h>
  27.  
  28.  
  29. #import "Animator.h"
  30.  
  31. typedef enum { REVERSE = -1, STOPPED = 0, FORWARD = 1 } runState;
  32. typedef enum { LOOP = 0, BOUNCE=1, ONCE=2} runMode;
  33. typedef enum { D_DEF=0, D_2=1, D_8=2, D_12=3, D_24=4} depthMode;
  34.  
  35. #define VERSION __DATE__
  36.  
  37. #define REVSTEP 0
  38. #define REV 1
  39. #define STOP 2
  40. #define FWD 3
  41. #define FWDSTEP 4
  42.  
  43. typedef struct _mpeg_info
  44. {
  45. // window settings
  46.     int    colorSpace,
  47.         zoom,
  48.         backing;
  49.     BOOL sync,
  50.         drop;
  51.     float fps;
  52. // stream attributes
  53.     unsigned int h_size;
  54.     unsigned int v_size;
  55.     unsigned char aspect_ratio;        // Code for aspect ratio.
  56.     unsigned char picture_rate;        // Code for picture rate.
  57.     unsigned long bit_rate;            // Bit rate.
  58.     unsigned int vbv_buffer_size;    // Minimum buffer size.
  59.     BOOL const_param_flag;            // Contrained parameter flag.
  60. // measured statistics
  61.     int    totalFrames,
  62.         frameCount;
  63.     double    elapsedTime;
  64. } mpegInfo;
  65.  
  66. /* a single frame of the movie */
  67. typedef struct {
  68.   NXBitmapImageRep *original;
  69.   NXImage *image;
  70.   } movieFrameStruct;
  71.  
  72. @interface MovieView : View
  73. {
  74.   char *moviePath;
  75.   movieFrameStruct *movieFrame;
  76.   int numFrames;
  77.   int currentFrameIndex;
  78.   int frameCount;
  79.   NXSize maxSize; /* size of biggest frame (for restore: method) */
  80.   float frameRate;
  81.   double oldTime;
  82.   
  83.   runState state; /* fwd, back, stopped */
  84.   runMode mode; /* once, loop, bounce */
  85.   depthMode dmode; /* depth on-screen */
  86.   BOOL updateControls, showFrameNumber;
  87.   BOOL noOriginals, fromStream, loading, willClose;
  88.   int stopFrame;
  89.   
  90.   id panel; /* control panel */
  91.  
  92.   id fpsSlider;  /* things in the control panel */
  93.   id fNumSlider;
  94.   id fpsText;
  95.   id actualFpsText;
  96.   id nFramesText;
  97.   id fNumText;
  98.   id modeButtons;
  99.   id stateButtons;
  100.   id depthButtons;
  101.   id statusText;
  102.   double oldt;
  103.  
  104.   BOOL pingDuringDisplay;
  105.   Animator *anim;
  106.   NXModalSession panelSession, windowSession;
  107. }
  108.  
  109. - initFrame:(const NXRect *) frameRect;
  110. - drawSelf:(const NXRect *) rects :(int)count;
  111.  
  112. - makeWindow;
  113. - makePanel:(char *)filename;
  114. - setFps:(float)fps;
  115. - setNoOriginals;
  116.  
  117. - (BOOL)open:sender;
  118. - (BOOL)load:sender;
  119. - (BOOL)openFile:(char *)filename;
  120. - (List *)openAnimDirectory:(char *)filenameRoot;
  121. - openMPEGfile:(char *)filename;
  122. - (BOOL)openAnimation:(const char *)filename;
  123.  
  124. - addBitmap:bm copy:(BOOL)copyFlag;
  125. - allocateFrames:(List *)frames;
  126.  
  127. - superviewSizeChanged:(NXSize *)old;
  128. - renderFrames;
  129. - recache;
  130.  
  131. - save:sender;
  132. - (BOOL) panelValidateFilenames:sender; // SavePanel's delegate
  133.  
  134. - freeCaches;
  135. - freeOriginals;
  136. - free;
  137. - copy:sender;
  138. - fwd:sender;
  139. - rev:sender;
  140. - move:sender;
  141. - stop:sender;
  142. - fwdStep:sender;
  143. - revStep:sender;
  144. - step:(int) direction;
  145. - reSize:(NXSize *)s;
  146. - expand2x:sender;
  147. - reduce50pct:sender;
  148. - restore:sender;
  149. - modeButtonsChanged:sender;
  150. - fNumSliderChanged:sender;
  151. - fpsSliderChanged:sender;
  152. - pingButtonChanged:sender;
  153. - selectStateButton:(runState)b;
  154. - depthButtonsChanged:sender;
  155. - updateCheckBoxChanged:sender;
  156. - frameCheckBoxChanged:sender;
  157.  
  158. - beginModal;
  159. - runModal;
  160. - endModal;
  161.  
  162. - updateControls;
  163. - freeFrames;
  164.  
  165. // Window's delegate
  166. - windowWillClose:sender;
  167. - windowDidMiniaturize:sender;
  168. - windowDidDeminiaturize:sender;
  169.  
  170. @end
  171.